const STORAGE_KEY = "search-list";
const HISTORY_MAX = 10;
export default {
  // 独立命名空间
  namespaced: true,
  state: () => ({
    searchData: uni.getStorageSync(STORAGE_KEY) || [],
  }),
  mutations: {
    /**
     * 保存数据到storage
     */
    savtToStorage(state) {
      uni.setStorage({
        key: STORAGE_KEY,
        data: state.searchData,
      });
    },
    /**
     * 添加数据
     */
    addSearchData(state, val) {
      if (!val) return;
      // 搜索历史的基本业务逻辑
      // 1.如果当前的搜索内容已存在，则原有的搜索内容需要被展示到搜索历史的头部，而不是新增一条搜索内容
      // 1.1 把已经存在的搜索内容删除，把新的搜索内容添加到头部
      // 2.如果当前的搜索内容不存在，则新的搜索内容会被展示在搜索历史头部
      // 2.1把新的搜索内容添加到头部
      const index = state.searchData.findIndex((item) => item === val);
      if (index !== -1) {
        // 当前的搜索数据存在
        state.searchData.splice(index, 1);
      }
      state.searchData.unshift(val);

      // 如果searchData中的数据量超过10，那么把最后面的数据进行删除
      if (state.searchData.length > HISTORY_MAX) {
        state.searchData.splice(
          HISTORY_MAX,
          state.searchData.length - HISTORY_MAX
        );
      }
      // 通过this.commit调用mutations函数
      this.commit("search/savtToStorage");
    },
    /**
     * 删除指定数据
     */
    removeSearchData(state, index) {
      state.searchData.splice(index, 1);
      this.commit("search/savtToStorage");
    },
    /**
     * 删除搜索数据
     */
    removeAllSearchData(state) {
      state.searchData = [];
      this.commit("search/savtToStorage");
    },
  },
  actions: {},
};
